//导入用户集合构造函数
const { User } = require('../../model/user');
const bcrypt = require('bcrypt');

module.exports = async (req, res) => {
    //接收请求参数
    const { email, password } = req.body;
    //if (email.trim().length == 0 || password.trim().length == 0) return res.status(400).send('<h4>邮件地址或者密码错误</h4>');
    if (email.trim().length == 0 || password.trim().length == 0) return res.status(400).render('admin/error', { msg: '邮件地址或者密码错误' });
    //根据邮箱地址查询用户信息
    //若查到用户，user变量的值为变量类型 对象中存储用户信息
    //如果没查询到用户，user变量为空
    let user = await User.findOne({ email });
    //查询到用户
    if (user) {
        //将客户端传递来的密码与用户信息的密码进行比对
        const isValid = await bcrypt.compare(password, user.password)
        //返回值是布尔值
        if (isValid) {
            //登录成功
            //将用户名存储在请求对象中
            req.session.username = user.username;
            //将用户角色存储在session中
            req.session.role = user.role;
            // res.send('登录成功')
            req.app.locals.userInfo = user;
            //对用户角色判断
            if (user.role == 'admin'){
            //重定向到用户列表页面
            res.redirect('/admin/user');
            } else {
                res.redirect('/home/');
            }
           
        } else {
            //登录失败
            res.status(400).render('admin/error',{msg:'邮件地址或者密码错误'})
        }
    } else {
        //未查询到用户
        res.status(400).render('admin/error',{msg:'邮件地址或者密码错误'})
    }
}
